#ifndef CLIENTSIDEPARSER_H_
#define CLIENTSIDEPARSER_H_

#include <libxml++/libxml++.h>
#include <libxml/tree.h>
#include <string>
#include <cstdlib>
#include "JuegoClientImp.h"
using namespace std;

/*Esta clase se encarga de interpretar los mensajes 
 *provenientes desde el server y llamar a los metodos correspondientes
 *de JuegoClientImp para actualizar su estado.*/

class ClientSideParser : public xmlpp::SaxParser
{
private:
	JuegoClientImp* juego;
public:
	ClientSideParser(JuegoClientImp* juego);
	void updateTerritotio(const AttributeList& attributes);
	void updateJugador(const AttributeList& attributes);
	void updateTurno(const AttributeList& attributes);
	void updateDado(const AttributeList& attributes);
	void on_start_element(const Glib::ustring& name, const AttributeList& properties);
	void on_end_element(const Glib::ustring& name);
	void on_characters(const Glib::ustring& characters);
	void on_comment(const Glib::ustring& text);
	void on_warning(const Glib::ustring& text);
	void on_error(const Glib::ustring& text);
	void on_fatal_error(const Glib::ustring& text);

	virtual ~ClientSideParser();
};

#endif /*CLIENTSIDEPARSER_H_*/
